﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CondominiosMVC.SRVivienda;

namespace CondominiosMVC.Controllers
{
    public class ViviendaController : Controller
    {
        //
        // GET: /Vivienda/

        public ActionResult Index()
        {
            SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
            ICollection<SVivienda> modelo = res.ListarTodosLasViviendas();

            return View(modelo);
        }

        //
        // GET: /Vivienda/Details/5

        public ActionResult Details(Int32 NumVivienda)
        {
            SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
            SVivienda modelo = res.ObtenerVivienda(NumVivienda);

            return View(modelo);
        }

        //
        // GET: /Vivienda/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Vivienda/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                SVivienda viviendaACrear = new SVivienda();
                SResidente residente = new SResidente();

                residente.DNI = (String)collection["Residente"];

                viviendaACrear.Ubicacion = (String)collection["Ubicacion"];
                viviendaACrear.Numero = int.Parse(collection["Numero"]);
                viviendaACrear.Metraje = int.Parse(collection["Metraje"]);
                viviendaACrear.Tipo = (String)collection["Tipo"];
                viviendaACrear.Residente = residente;

                SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
                res.CrearVivienda(viviendaACrear);

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        
        //
        // GET: /Vivienda/Edit/5
 
        public ActionResult Edit(Int32 NumVivienda)
        {
            SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
            SVivienda modelo = res.ObtenerVivienda(NumVivienda);

            return View(modelo);
        }

        //
        // POST: /Vivienda/Edit/5

        [HttpPost]
        public ActionResult Edit(Int32 NumVivienda, FormCollection collection)
        {
            try
            {
                SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
                SVivienda viviendaAModificar = res.ObtenerVivienda(NumVivienda);
                SResidente residente = new SResidente();

                residente.DNI = (String)collection["Residente.DNI"];

                viviendaAModificar.Ubicacion = (String)collection["Ubicacion"];
                viviendaAModificar.Numero = int.Parse(collection["Numero"]);
                viviendaAModificar.Metraje = int.Parse(collection["Numero"]);
                viviendaAModificar.Tipo = (String)collection["Tipo"];
                viviendaAModificar.Residente = residente;

                res.ModificarVivienda(viviendaAModificar);
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Vivienda/Delete/5

        public ActionResult Delete(Int32 NumVivienda)
        {
            SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
            SVivienda modelo = res.ObtenerVivienda(NumVivienda);

            return View(modelo);
        }

        //
        // POST: /Vivienda/Delete/5

        [HttpPost]
        public ActionResult Delete(Int32 NumVivienda, FormCollection collection)
        {
            try
            {
                SRVivienda.ViviendasClient res = new SRVivienda.ViviendasClient();
                
                SVivienda viviendaAEliminar = res.ObtenerVivienda(NumVivienda);

                res.EliminarVivienda(viviendaAEliminar);
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
